package com.tensquare.friend.service;

import com.tensquare.friend.client.UserClient;
import com.tensquare.friend.dao.FriendDao;
import com.tensquare.friend.dao.NoFriendDao;
import com.tensquare.friend.pojo.Friend;
import com.tensquare.friend.pojo.NoFriend;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;

/**
 * @author fangyu
 * @version v1.0.0
 * @date 2020/10/15 4:17 下午
 */
@Service
public class FriendService {

    @Autowired
    private FriendDao friendDao;

    @Autowired
    private NoFriendDao noFriendDao;

    @Autowired
    private UserClient userClient;

    /**
     * 添加好友
     * @param userId
     * @param friendId
     * @return
     */
    @Transactional
    public int addFriend(String userId, String friendId) {
        // 判断如果用户已经添加了这个好友，则不进行任何操作,返回0
        if (friendDao.selectCount(userId, friendId) > 0) {
            return 0;
        }

        // 增加自己的关注数
        userClient.incFollowcount(userId,1);
        // 增加对方的粉丝数
        userClient.incFanscount(friendId,1);
        // 向喜欢表中添加记录
        Friend friend=new Friend();
        friend.setUserid(userId);
        friend.setFriendid(friendId);
        friend.setIslike("0");
        friendDao.save(friend);

        // 判断对方是否喜欢你，如果喜欢，将islike设置为1
        if (friendDao.selectCount(friendId, userId) > 0) {
            friendDao.updateLike(userId, friendId, "1");
            friendDao.updateLike(friendId, userId, "1");
        }

        return 1;
    }

    /**
     * 向不喜欢列表中添加记录
     * @param userId
     * @param friendId
     */
    public void addNoFriend(String userId, String friendId) {
        NoFriend noFriend = new NoFriend();
        noFriend.setUserid(userId);
        noFriend.setFriendid(friendId);
        noFriendDao.save(noFriend);
    }

    /**
     * 删除好友
     * @param userId
     * @param friendId
     */
    @Transactional
    public void deleteFriend(String userId, String friendId) {

        // 减少自己的关注数
        userClient.incFollowcount(userId,-1);
        // 减少对方的粉丝数
        userClient.incFanscount(friendId,-1);
        friendDao.deleteFriend(userId, friendId);
        friendDao.updateLike(friendId, userId, "0");
        addNoFriend(userId, friendId);
    }

}
